﻿# -*- coding: utf-8 -*-

""" Ведение логов """

import logging

class Logger(object):
    """ Класс для ведения логов """
    # Является синглтоном, чтобы избежать
    # блокировки файла логов одним из нескольких объектов
    # этого класса

    __single = None

    def __new__(cls, *args, **kwargs):
        if cls != type(cls.__single):
            cls.__single = object.__new__(cls, *args, **kwargs)
        return cls.__single

    def __init__(self):
        logging.basicConfig(level = logging.DEBUG,
            format = '%(asctime)s %(levelname)-8s %(message)s',
            datefmt = '%a, %d %b %Y %H:%M:%S',
            filename = 'work.log',
            filemode = 'w')


    def debug(self, msg, *args, **kwargs):
        """ Debug message """

        logging.debug(msg, *args, **kwargs)

    def info(self, msg, *args, **kwargs):
        """ Informational message """

        logging.info(msg, *args, **kwargs)

    def warning(self, msg, *args, **kwargs):
        """ Warning message """

        logging.warning(msg, *args, **kwargs)

    def error(self, msg, *args, **kwargs):
        """ Error message """

        logging.error(msg, *args, **kwargs)

    def critical(self, msg, *args, **kwargs):
        """ Critical error """

        logging.critical(msg, *args, **kwargs)